package lexico;

import java.util.ArrayList;

/**
 * @author heekinho
 */
public class SymbolTable extends ArrayList<Token>{
	// Talvez fosse herança? Talvez nem necessite desta classe?
//	private ArrayList<Token> tokens = new ArrayList<Token>();

	public SymbolTable() {
	}

	public void pushBackToken(Token token){
		this.add(token);
	}

	/**
	 * Talvez a responsabilidade de tratamento dos tokens seja dentro da classe
	 * e não fora. Algo como o currentToken e getNextToken. Porém este efeito
	 * pode ser conseguido facilmente pela iteração da Estrutura de dados fora
	 * daqui.
	 * @return
	 */
//	public ArrayList<Token> getTokens(){
//		return tokens;
//	}

	/**
	 * Imprime a lista de tokens
	 */
	public void printTokens(){
		System.out.println("Tokens: ");

		for (Token token : this) {
			System.out.print("| " + token.getTokenClass() + " ");
			System.out.print("| \"" + token.getLexeme() + "\" ");
			System.out.print("| " + token.getLine() + " ");
			System.out.println("| " + token.getPosition() + " |");
		}
	}
}
